Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
68 / 68
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
1 / 1
ServiceProvider
100.00% covered (success)
100.00%
68 / 68
100.00% covered (success)
100.00%
5 / 5
41
100.00% covered (success)
100.00%
1 / 1
 boot
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
1 / 1
7
 about
100.00% covered (success)
100.00%
30 / 30
100.00% covered (success)
100.00%
1 / 1
23
 register
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 routes
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
9
 version
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4/**
5 * Playground
6 */
7namespace Playground\Login\Blade;
8
9use Illuminate\Foundation\Console\AboutCommand;
10use Illuminate\Foundation\Support\Providers\AuthServiceProvider;
11use Illuminate\Support\Str;
12
13/**
14 * \Playground\Login\Blade\ServiceProvider
15 */
16class ServiceProvider extends AuthServiceProvider
17{
18    protected string $package = 'playground-login-blade';
19
20    public const VERSION = '73.0.0';
21
22    public function boot(): void
23    {
24        /**
25         * @var array<string, mixed> $config
26         */
27        $config = config($this->package);
28
29        if (! empty($config['load']) && is_array($config['load'])) {
30
31            if (! empty($config['load']['routes']) && is_array($config['routes'])) {
32                $this->routes($config['routes']);
33            }
34
35            if (! empty($config['load']['views'])) {
36                $this->loadViewsFrom(
37                    dirname(__DIR__).'/resources/views',
38                    'playground-login'
39                );
40            }
41
42            if ($this->app->runningInConsole()) {
43                // Publish configuration
44                $this->publishes([
45                    sprintf('%1$s/config/%2$s.php', dirname(__DIR__), $this->package) => config_path(sprintf('%1$s.php', $this->package)),
46                ], 'playground-config');
47
48                // Publish Blade Views
49                $this->publishes([
50                    dirname(__DIR__).'/resources/views' => resource_path(Str::of('vendor/'.$this->package)->beforeLast('-blade')->toString()),
51                ], 'playground-blade');
52            }
53
54            $this->about();
55        }
56    }
57
58    public function about(): void
59    {
60        $config = config($this->package);
61        $config = is_array($config) ? $config : [];
62
63        $load = ! empty($config['load']) && is_array($config['load']) ? $config['load'] : [];
64
65        $middleware = ! empty($config['middleware']) && is_array($config['middleware']) ? $config['middleware'] : [];
66
67        $routes = ! empty($config['routes']) && is_array($config['routes']) ? $config['routes'] : [];
68
69        $sitemap = ! empty($config['sitemap']) && is_array($config['sitemap']) ? $config['sitemap'] : [];
70
71        $version = $this->version();
72
73        AboutCommand::add('Playground: Login Blade', fn () => [
74            '<fg=yellow;options=bold>Load</> Routes' => ! empty($load['routes']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
75            '<fg=yellow;options=bold>Load</> Views' => ! empty($load['views']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
76
77            '<fg=yellow;options=bold>Middleware</> auth' => sprintf('%s', json_encode($middleware['auth'])),
78            '<fg=yellow;options=bold>Middleware</> default' => sprintf('%s', json_encode($middleware['default'])),
79            '<fg=yellow;options=bold>Middleware</> guest' => sprintf('%s', json_encode($middleware['guest'])),
80
81            '<fg=blue;options=bold>View</> [layout]' => sprintf('[%s]', $config['layout']),
82            '<fg=blue;options=bold>View</> [prefix]' => sprintf('[%s]', $config['view']),
83
84            '<fg=magenta;options=bold>Sitemap</> Views' => ! empty($sitemap['enable']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
85            '<fg=magenta;options=bold>Sitemap</> Guest' => ! empty($sitemap['guest']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
86            '<fg=magenta;options=bold>Sitemap</> User' => ! empty($sitemap['user']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
87            '<fg=magenta;options=bold>Sitemap</> [view]' => sprintf('[%s]', $sitemap['view']),
88
89            '<fg=red;options=bold>Route</> confirm' => ! empty($routes['confirm']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
90            '<fg=red;options=bold>Route</> forgot' => ! empty($routes['forgot']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
91            '<fg=red;options=bold>Route</> login' => ! empty($routes['login']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
92            '<fg=red;options=bold>Route</> logout' => ! empty($routes['logout']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
93            '<fg=red;options=bold>Route</> register' => ! empty($routes['home']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
94            '<fg=red;options=bold>Route</> reset' => ! empty($routes['reset']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
95            '<fg=red;options=bold>Route</> token' => ! empty($routes['token']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
96            '<fg=red;options=bold>Route</> verify' => ! empty($routes['verify']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
97
98            'Package' => $this->package,
99            'Version' => $version,
100        ]);
101    }
102
103    public function register(): void
104    {
105        $this->mergeConfigFrom(
106            sprintf('%1$s/config/%2$s.php', dirname(__DIR__), $this->package),
107            $this->package
108        );
109    }
110
111    /**
112     * @param array<string, bool> $routes
113     */
114    public function routes(array $routes): void
115    {
116        if (! empty($routes['confirm'])) {
117            $this->loadRoutesFrom(dirname(__DIR__).'/routes/confirm.php');
118        }
119        if (! empty($routes['forgot'])) {
120            $this->loadRoutesFrom(dirname(__DIR__).'/routes/forgot.php');
121        }
122        if (! empty($routes['login'])) {
123            $this->loadRoutesFrom(dirname(__DIR__).'/routes/login.php');
124        }
125        if (! empty($routes['logout'])) {
126            $this->loadRoutesFrom(dirname(__DIR__).'/routes/logout.php');
127        }
128        if (! empty($routes['register'])) {
129            $this->loadRoutesFrom(dirname(__DIR__).'/routes/register.php');
130        }
131        if (! empty($routes['reset'])) {
132            $this->loadRoutesFrom(dirname(__DIR__).'/routes/reset.php');
133        }
134        if (! empty($routes['token'])) {
135            $this->loadRoutesFrom(dirname(__DIR__).'/routes/token.php');
136        }
137        if (! empty($routes['verify'])) {
138            $this->loadRoutesFrom(dirname(__DIR__).'/routes/verify.php');
139        }
140    }
141
142    public function version(): string
143    {
144        return static::VERSION;
145    }
146}